home *** CD-ROM | disk | FTP | other *** search
/ Suzy B Software 2 / Suzy B Software CD-ROM 2 (1994).iso / extras / programm / gemfsc20 / gemfsc20.lzh / GEMFUNCS / FRMVFMT.C < prev    next >
C/C++ Source or Header  |  1993-02-01  |  1KB  |  51 lines

  1. /**************************************************************************
  2.  * FRMVFMT.C - Allocate a 2k buffer, format text into it with vsprintf().
  3.  *************************************************************************/
  4.  
  5. #include "gemfintl.h"
  6. #include <stdio.h>
  7.  
  8. static char GFAR errmsg[] = "\n"
  9.                        "<Internal error: Can't get buffer to format message>"
  10.                        "\n"
  11.                        ;
  12.  
  13. static char GFAR nullmsg[] = "\n"
  14.                         "<Internal error: NULL format pointer>\n"
  15.                         "\n"
  16.                         ;
  17.  
  18. void _FrmVFree(buffer)
  19.     char *buffer;
  20. {
  21.     if (buffer != NULL && buffer != errmsg && buffer != nullmsg) {
  22.         apl_free(buffer);
  23.     }
  24. }
  25.  
  26. char *_FrmVFormat(fmt, args, plen)
  27.     char    *fmt;
  28.     va_list args;
  29.     short      *plen;
  30. {
  31.     char    *buffer;
  32.     short      len;
  33.  
  34.     if (NULL == fmt) {
  35.         buffer = nullmsg;
  36.         len    = gfErr_parameter_null;
  37.     } else if (NULL == (buffer = apl_malloc(2048L))) {
  38.         buffer = errmsg;
  39.         len    = gfErr_no_memory;
  40.     } else {
  41.         len = vsprintf(buffer, fmt, args);
  42.     }
  43.  
  44.     if (plen != NULL) {
  45.         *plen = len;
  46.     }
  47.  
  48.     return buffer;
  49. }
  50.  
  51.